package com.javaclimb.music.contrller;


import com.alibaba.fastjson.JSONObject;
import com.javaclimb.music.domain.Singer;
import com.javaclimb.music.domain.Song;
import com.javaclimb.music.service.SingerService;
import com.javaclimb.music.service.SongService;
import com.javaclimb.music.utils.Consts;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

/**
 * 歌曲控制类
 */

@RequestMapping(value = "/song",method = RequestMethod.POST)/*或者@PostMapping()*/
@RestController
public class SongController {

    @Autowired
    private SongService songService;

    /**
     * 添加歌手
     */
    @RequestMapping(value ="/add",method = RequestMethod.POST)
    public Object addSong(HttpServletRequest request,@RequestParam("file") MultipartFile mpFile) throws IOException {
        JSONObject jsonObject=new JSONObject();
        String singerId=request.getParameter("singerId").trim();//性别
        String name=request.getParameter("name").trim();//姓名
        String introduction=request.getParameter("introduction").trim();//简介
       // String pic=request.getParameter("pic").trim();//头像
        String pic="/img/songPic/hhh.jpg";
        String lyric=request.getParameter("lyric").trim();
        if(mpFile.isEmpty()){
            jsonObject.put(Consts.CODE,0);
            jsonObject.put(Consts.MSG,"歌曲上传失败");
            return jsonObject;
        }

        String fileName=System.currentTimeMillis()+mpFile.getOriginalFilename();
        String filePath=System.getProperty("user.dir")+System.getProperty("file.separator")+"song";


        File file1=new File(filePath);
        if(!file1.exists()){
            file1.mkdirs();
        }

        //实际文件地址
        File f2=new File(filePath+System.getProperty("file.separator")+fileName);

        //存储到数据库中的图片路径

        String storeAvatorPath="/song/"+fileName;

        //上传过程
        mpFile.transferTo(f2);

        Song song=new Song();

        song.setSingerId(Integer.parseInt(singerId));
         song.setName(name);
        song.setIntroduction(introduction);
        song.setPic(pic);
        song.setLyric(lyric);
        song.setUrl(storeAvatorPath);
        boolean flag=songService.insert(song);

        if(flag){
            jsonObject.put(Consts.CODE,1);
            jsonObject.put(Consts.MSG,"保存成功");
            jsonObject.put("avator",storeAvatorPath);
            return jsonObject;
        }
        jsonObject.put(Consts.CODE,0);
        jsonObject.put(Consts.MSG,"保存失败");
        return jsonObject;



    }

   @RequestMapping(value = "/singer/detail",method =RequestMethod.GET)
    public Object songOfSingerId(HttpServletRequest request){
        String id=request.getParameter("singerId");
        return songService.songOfSingerId(Integer.parseInt(id));
}

   @RequestMapping(value = "/update" ,method =RequestMethod.POST)
    public Object save(HttpServletRequest request){
        String name=request.getParameter("name").trim();
        String lyric=request.getParameter("lyric").trim();
        String introduction=request.getParameter("introduction").trim();
        String id=request.getParameter("id").trim();

        Song so=new Song();
        so.setLyric(lyric);
so.setIntroduction(introduction);
so.setName(name);
so.setId(Integer.parseInt(id));
JSONObject jsonObject=new JSONObject();
boolean flag=songService.update(so);

if(flag){
    jsonObject.put(Consts.CODE,1);
    jsonObject.put(Consts.MSG,"修改成功");
    return jsonObject;
}else { jsonObject.put(Consts.CODE,0);
        jsonObject.put(Consts.MSG,"修改失败");}

        return jsonObject;

}

@RequestMapping(value = "/deleteSong",method = RequestMethod.GET)

public Object delete(HttpServletRequest request){
        JSONObject object=new JSONObject();

        String id=request.getParameter("id");
        boolean flag=songService.delete(Integer.parseInt(id));

        if(flag){
            object.put(Consts.CODE,"1");
            object.put(Consts.MSG,"删除成功");
            return object;
        }
       object.put(Consts.CODE,"0");
      object.put(Consts.MSG,"删除失败");
        return object;
}

    //    /**
    //     * 根据主键查询整个对象
    //     */
    //    @RequestMapping(value ="/selectByPrimaryKey",method = RequestMethod.GET)
    //    public int selectByPrimaryKey(HttpServletRequest request) {
    //        String id=request.getParameter("id").trim();
    //        return songService.selectByPrimaryKey(Integer.parseInt(id));
    //    }
    //
    //    /**
    //     * 查询所有的歌手
    //     */
    //    @RequestMapping(value ="/allSinger",method = RequestMethod.GET)
    //    public Object allSinger(HttpServletRequest request) {
    //
    //        return songService.allSinger();
    //    }
    //    /**
    //     * 根据歌手名字模糊查询列表
    //     */
    //    @RequestMapping(value ="/singerOfName",method = RequestMethod.GET)
    //    public Object singerOfName(HttpServletRequest request) {
    //     String name=request.getParameter("name").trim();
    //        return songService.singerOfName("%"+name+"%");
    //    }
    //
    //    /**
    //     * 根据性别查询
    //     */
    //    @RequestMapping(value ="/singerOfSex",method = RequestMethod.GET)
    //    public Object singerOfSex(HttpServletRequest request) {
    //        String sex=request.getParameter("sex").trim();
    //        return songService.singerOfS(Integer.parseInt(sex));
    //    }
    //
    ///***
    // * 更新歌手图片
    // *
    // */
    //
    //    @PostMapping("updateSigerPic")
    //    public  Object updateSigerPic(@RequestParam("file")MultipartFile mf,@RequestParam("id") int id) throws IOException {
    //
    //
    //        JSONObject jsonObject=new JSONObject();
    //        if(mf.isEmpty()){
    //            jsonObject.put(Consts.CODE,0);
    //            jsonObject.put(Consts.MSG,"修改图片失败");
    //            return jsonObject;
    //        }
    //
    //        String fileName=System.currentTimeMillis()+mf.getOriginalFilename();
    //        String filePath=System.getProperty("user.dir")+System.getProperty("file.separator")+"img"
    //                +System.getProperty("file.separator")+"singerPic"+System.getProperty("file.separator");
    //
    //        File file1=new File(filePath);
    //        if(!file1.exists()){
    //            file1.mkdirs();
    //        }
    //
    //        //实际文件地址
    //        File f2=new File(filePath+System.getProperty("file.separator")+fileName);
    //
    //        //存储到数据库中的图片路径
    //
    //        String storeAvatorPath="img/singerPic/"+fileName;
    //
    //        //上传过程
    //        mf.transferTo(f2);
    //
    //        Singer singer=new Singer();
    //
    //        singer.setId(id);
    //        singer.setPic(storeAvatorPath);
    //
    //        boolean flag=songService.update(singer);
    //
    //        if(flag){
    //            jsonObject.put(Consts.CODE,1);
    //            jsonObject.put(Consts.MSG,"修改图片成功");
    //            jsonObject.put("pic",storeAvatorPath);
    //            return jsonObject;
    //        }
    //        jsonObject.put(Consts.CODE,0);
    //        jsonObject.put(Consts.MSG,"修改图片失败");
    //        return jsonObject;
    //    }
    //
    //
    //

    /**
     * 更新歌手图片
     * @param mf
     * @param id
     * @return
     */
    @PostMapping("/updataPic")
    public Object updataPic(@RequestParam("file") MultipartFile mf,@RequestParam("id") int id){
   //创建JSONObject对象

    JSONObject jsonObject=new JSONObject();
   //判断上传的文件是否为空如果为空则上传失败
        if(mf.isEmpty()){
            jsonObject.put(Consts.MSG,"图片上传失败");
            jsonObject.put(Consts.CODE,0);
            return jsonObject;

        }
    //获取文件名为了文件名不重复给它加当前时间毫秒
        String name=System.currentTimeMillis()+mf.getOriginalFilename();
        //获取文件路径
        String filePath=System.getProperty("user.dir")+System.getProperty("file.separator")+
                "img"+System.getProperty("file.separator")+"songPic";
        //判断文件路径存不存在如果不存在则新增该路径

        File f1=new File(filePath);
        if(!f1.exists()){
            f1.mkdir();
        }
        //文件的真实路径
        File dest=new File(filePath+System.getProperty("file.separator")+name);
        //图片存储到数据库中的路径
        String  avatorePath="/img/songPic/"+name;
        try {

            mf.transferTo(dest);//transferto()方法，是springmvc封装的方法，用于图片上传时，把内存中图片写入磁盘
            Song song=new Song();
            song.setId(id);
            song.setPic(avatorePath);
            boolean flag=songService.update(song);
            if(flag){
                jsonObject.put(Consts.CODE,1);
                jsonObject.put(Consts.MSG,"上传成功");
                jsonObject.put("pic",avatorePath);
                return jsonObject;
            }
        }catch (Exception e){
            jsonObject.put(Consts.CODE,0);
            jsonObject.put(Consts.MSG,"上传失败");
        }finally {
            return jsonObject;
        }


    }

    /**
     * 歌曲的存放
     * @param mf
     * @param id
     * @return
     */

    @PostMapping("/updateSongUrl")
    public Object  updateSongUrl(@RequestParam("file") MultipartFile mf,@RequestParam("id") int id){
        JSONObject jsonObject=new JSONObject();
        //判断获取的文件是否为空
        if(mf.isEmpty()){
            jsonObject.put(Consts.MSG,"图片上传失败");
            jsonObject.put(Consts.CODE,0);
            return jsonObject;

        }
        //获取文件的名称
        String name=System.currentTimeMillis()+mf.getOriginalFilename();
        //获取文件的真实路径
        String filePath=System.getProperty("user.dir")+System.getProperty("file.separator")+"song";


        //判断文件的路径存不存在如果不存在则新建

        File f1=new File(filePath);
        if(!f1.exists()){
            f1.mkdir();
        }
        //transferto()方法，是springmvc封装的方法，用于图片上传时，把内存中图片写入磁盘


        //文件的真实存的路径
        String avator="/song/"+name;
        File dest=new File(filePath+System.getProperty("file.separator")+name);
       try{
           mf.transferTo(dest);
           Song song=new Song();
           song.setUrl(avator);
           song.setId(id);
           boolean flag=songService.update(song);
           if(flag){
               jsonObject.put(Consts.MSG,"上传成功");
               jsonObject.put(Consts.CODE,1);
               jsonObject.put("avator",avator);
               return jsonObject;
           }


       }catch (Exception e){
           jsonObject.put(Consts.MSG,"上传失败");
           jsonObject.put(Consts.CODE,0);
       }
     finally {
           return jsonObject;
       }




    }






}
